package vista;

import java.awt.Color;
import java.awt.Font;
import java.awt.GridLayout;

import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;

import java.util.Observer;
import java.util.Observable;

import modelo.tiempo.Tiempo;
import modelo.policia.Policia;


public class VistaLugarTiempo extends JPanel implements Observer{

	private static final long serialVersionUID = -1911204412077534325L;
	private JLabel etiqueta;
	private String lugar,dia;
	private int hora;
	private Tiempo observableTiempo;
	private Policia observablePolicia;
	private VistaPoliciaViajar vistaPoliciaViajar;
    
    public VistaLugarTiempo(){   	
    	etiqueta = new JLabel(); 
    	this.resetearVista();
    	lugar = "";
		this.setBackground(Color.black);
		this.setLayout(new GridLayout(1,1));
		
        etiqueta.setForeground(Color.white);
        etiqueta.setText(lugar + ". " + dia + ", " + hora + "hs." );
        etiqueta.setHorizontalAlignment(SwingConstants.CENTER);
        etiqueta.setVerticalAlignment(SwingConstants.CENTER);
        etiqueta.setFont(new Font("Dialog", Font.BOLD, 14));
        
        this.add(etiqueta,null);
    }
    public void setearPolicia(Policia policia){
    	observablePolicia = policia;
    	policia.addObserver(this);
    	this.update(observablePolicia,lugar);
    }
    public void setearEtiquetaVacia(){
		etiqueta.setText("");
    }
    public void resetearVista(){
    	hora = 7;
    	dia = "Lunes";
    	observableTiempo = Tiempo.obtenerInstancia();
    	this.observableTiempo.addObserver(this);
    	etiqueta.setText(lugar + ". " + dia + ", " + hora + " hs." );
    }
	@Override	
	public void update(Observable arg0, Object arg1) {		
		lugar = observablePolicia.getCiudadActual().getNombre();
		etiqueta.setText(lugar + ". " + dia + ", " + hora + " hs." );
		if (! observablePolicia.getCaso().casoFinalizado()){
			Thread hilo = new Thread (new HiloTiempo(hora,dia,lugar,etiqueta,vistaPoliciaViajar));
			hilo.start();
		}
		dia = observableTiempo.obtenerDia();
	    hora = observableTiempo.obtenerHora();
	}
	public void setearVistaPoliciaViajar(VistaPoliciaViajar vista) {
		this.vistaPoliciaViajar = vista;		
	}
}